package xin.marcher.wind.migrate.util;

import cn.hutool.json.JSONNull;

import java.util.*;

/**
 * 数据迁移工具类
 */
public class MigrateUtil {

    /**
     * 对集合中存在的空 value 值进行移除
     *
     * @param mapList
     * @return
     */
    public static List<Map<String, Object>> removeNullValue(List<Map<String, Object>> mapList) {
        for (Map<String, Object> map : mapList) {
            removeNullValue(map);
        }
        return mapList;
    }

    /**
     * 更正 Map 中的 Value 空值对象类型
     *
     * @param map
     */
    public static Map updateNullValue(Map map) {
        Set set = map.keySet();
        Map updateMap = new HashMap();
        for (Iterator iterator = set.iterator(); iterator.hasNext(); ) {
            Object obj = iterator.next();
            Object value = map.get(obj);

            if (value.equals(JSONNull.NULL)) {
                updateMap.put(obj, null);
            } else {
                updateMap.put(obj, value);
            }
        }
        return updateMap;
    }

    /**
     * 移除 map 中的 value 空值
     *
     * @param map
     * @return
     */
    private static void removeNullValue(Map map) {
        Set set = map.keySet();
        for (Iterator iterator = set.iterator(); iterator.hasNext(); ) {
            Object obj = iterator.next();
            Object value = map.get(obj);
            remove(value, iterator);
        }
    }

    /**
     * @param obj
     * @param iterator
     */
    private static void remove(Object obj, Iterator iterator) {
        if (JSONNull.NULL.equals(obj)) {
            iterator.remove();
        }
    }
}
